package se.webbzon.boltzmann.battle.battleaction.punch;

import java.util.List;

import se.webbzon.boltzmann.battle.battleaction.BattleAction;
import se.webbzon.boltzmann.battle.object.npc.BattleNPC;
import se.webbzon.boltzmann.effect.CharacterDamageEffect;
import se.webbzon.boltzmann.effect.CharacterSpinningEffect;
import se.webbzon.boltzmann.game.npc.StandingDuty;
import se.webbzon.oschi01.worldarea.WorldArea;

public class PunchAction extends BattleAction {
	
	/*============================================================
	Constructors
	============================================================*/
	
	/** Creates a new punch action. **/
	public PunchAction(WorldArea world, BattleNPC caster, List<BattleNPC> targets) {
		super(world, caster, targets);
	}
	
	/*============================================================
	Public Methods
	============================================================*/
	
	@Override public void onBegin() {
		PunchActionDuty duty = new PunchActionDuty(getCaster(),this);
		getCaster().assignDuty(duty);
		
		BattleNPC target = null;
		for (BattleNPC npc : getTargets()) {
			target = npc;
			break;
		}
		
		target.assignDuty(new StandingDuty(target));
		duty.setTarget(target.getX(), target.getZ(), getCaster().getRunSpeed());
	}
	
	@Override public void onEnd() {};

	@Override public void onAbsorb(BattleNPC target) {};

	@Override public void onDamage(BattleNPC target) {
		new CharacterDamageEffect(target,40).launch(getWorld());
		new CharacterSpinningEffect(target,40,5).launch(getWorld());
	}

	@Override public void onHeal(BattleNPC target) {};

}
